Ansi Escape Sequence Parser
For a complete list of implemented sequences, see the documentation.
This is done through a pulldown type parser, where an iterator is exposed. This essentially
turns all of the ANSI sequences into enums and splits the string at every location that there
was an ANSI Sequence.
Example:
use ansi_parser::{Output, AnsiParser};
use ansi_parser::AnsiSequence;
fn main() {
let parsed: Vec<Output> = "This is \u{1b}[3Asome text!"
.ansi_parse()
.take(2)
.collect();
assert_eq!(
vec![
Output::TextBlock("This is "),
Output::Escape(AnsiSequence::CursorUp(3))
],
parsed
);
for block in parsed.into_iter() {
match block {
Output::TextBlock(text) => println!("{}", text),
Output::Escape(seq) => println!("{}", seq)
}
}
}